// 格式化工具函数
const formatUtils = {
    // 格式化涨幅
    formatChange: (value) => {
        return parseFloat(value || 0).toFixed(2) + '%';
    },
    
    // 格式化强度
    formatStrength: (value) => {
        return Math.round(parseFloat(value || 0));
    },
    
    // 格式化价格
    formatPrice: (value) => {
        return parseFloat(value || 0).toFixed(2);
    },
    
    // 格式化成交量（万手）
    formatVolume: (value) => {
        return (parseFloat(value || 0) / 10000).toFixed(2) + '万';
    },
    
    // 格式化时间
    formatTime: (time) => {
        if (time.length === 5) { // HH:mm格式
            return time;
        }
        if (time.length === 8) { // HH:mm:ss格式
            return time.substring(0, 5);
        }
        return time;
    }
};

// 数据处理工具
const dataUtils = {
    // 处理板块数据
    processBlockData: (response) => {
        if (!response || !response.list) return [];
        return response.list.map(item => ({
            code: item[0],  // 板块代码
            name: item[1],  // 板块名称
            strength: item[2], // 板块强度
            change: item[3],  // 涨跌幅
            limit: item[4] || 0  // 涨停家数
        })).filter(item => item.code && item.name); // 过滤掉无效数据
    },
    
    // 处理个股数据
    processStockData: (response) => {
        if (!response || !response.data || !response.data.list) return [];
        return response.data.list.map(item => ({
            code: item[0],  // 股票代码
            name: item[1],  // 股票名称
            change: item[6] || 0,  // 涨跌幅
            continuous: item[23] ? item[23].replace(/"/g, '') : ''  // 去掉连板数据中的双引号
        })).filter(item => item.code && item.name); // 过滤掉无效数据
    },
    
    // 处理分时图数据
    processTimelineData: (response) => {
        if (!response || !response.data || !response.data.trends) return null;
        const trends = response.data.trends.map(trend => {
            if (typeof trend === 'string') {
                const [time, price, avg, volume] = trend.split(',');
                return {
                    time: formatUtils.formatTime(time),
                    price: formatUtils.formatPrice(price),
                    avg: formatUtils.formatPrice(avg),
                    volume: formatUtils.formatVolume(volume)
                };
            }
            return trend;
        });
        return {
            preClose: response.data.preClose,
            trends
        };
    },
    
    // 处理K线图数据
    processKLineData: (response) => {
        if (!response || !response.data || !response.data.klines) return null;
        return response.data.klines.map(kline => {
            if (typeof kline === 'string') {
                const [date, open, close, high, low, volume] = kline.split(',');
                return {
                    date,
                    open: formatUtils.formatPrice(open),
                    close: formatUtils.formatPrice(close),
                    high: formatUtils.formatPrice(high),
                    low: formatUtils.formatPrice(low),
                    volume: formatUtils.formatVolume(volume)
                };
            }
            return kline;
        });
    }
}; 